#include <iostream>
#include <cmath>

using namespace std;

// void f1(string &s)
// {
//     cout << s << endl;
// }

// void f2(char * &p)
// {
//     cout << *p << endl;
// }

// void f3(int &ra)
// {
//     cout << ra << endl;
// }

// void f4(float bj = 1, float high = 1)
// {
//     cout << (3.14*pow(bj, 2)*high)/3 << endl;
// }

void surfaceArea(float a)
{
    cout << a*a*3.14 << endl;
}
void surfaceArea(float a, float b)
{   
    cout << a*b << endl;
}
void surfaceArea(float a, float b, float c)
{
    float s = (a+b+c)/2;
    cout << sqrt(s*(s-a)*(s-b)*(s-c)) << endl;
}

//
int main(void)
{
    
    //函数重载
    float a, b, c;
    cout << "输入三个以内参数:";
    cin >> a >> b >> c;
    if(a != 0)
    {
        if(b != 0)
        {
            if(c != 0)
            {
                surfaceArea(a, b, c);
                return 0;
            }
            surfaceArea(a, b);
            return 0;
        }
        surfaceArea(a);
        return 0;
    }


    // //函数默认参数
    // float bj, high;
    // cout << "输入半径和高(高为0按默认值):";    
    // cin >> bj >> high;
    // // cout << "输入高：";    
    // // cin >> high;
    // if(high == 0)
    // f4(bj);         //  默认high = 1  
    // else  
    // f4(bj, high);    
    // f4();           //  默认bj = 1，high = 1；


    // //类型转换
    // int i = 6;
    // const int &ri = i;
    // // ri = 8; //不可修改
    // const_cast<int &>(ri) = 8;
    // ////////////////////////////////    
    // int i = 6;
    // const int *p = &i;
    // // *p = 8; // ❌
    // *(const_cast<int *>(p)) = 8;    // ✔
    // // int *k = p;//❌
    // int *k = const_cast<int *>(p);  // ✔

    
    // //引用
    // string s = "abcd";
    // f1(s);
    // char ch = 'a';
    // char *p = &ch;
    // f2(p);
    // int a =100;
    // int &ra = a;
    // f3(a);

    //输入
    // int a;
    // double f;
    // string s;
    // cin >> a >> f >> s;
    // cout << a << f << s << endl;


    //大小写转换
    // string s;
    // cin >> s;
    // for(int i = 0; i < s.length(); i++)
    // {
    //     if(s[i] > '1' && s[i] < '9')
    //     {
    //         cout << s[i];
    //         // continue;
    //     }
    //     else if(s[i] > 'a' && s[i] < 'z')
    //     {
    //         s[i] -= 32;
    //         cout << s[i];
    //     }
    //     else if(s[i] > 'A' && s[i] < 'Z')
    //     {
    //         s[i] += 32;
    //         cout << s[i];
    //     }
    // }
    // cout << endl;




    return 0;
}
